React Native for Web + TypeScriptでGoogleTagManagerを使ってみた
CX事業本部の太田です。
React Native for Web
+ TypeScript
でGoogleTagManager
(以後GTM
)を使ってみたのでご紹介します。
GTMとは
GTMはタグ
やトリガー
を設定して、GoogleAnalytics
(以後GA
)へのイベント送信を行えるGoogleが提供するツールです。
無料で提供されており、誰でも使えます。
GTMを組み込む
まずは、GTM
を使えるようにHTMLに設定を追記します。
<!DOCTYPE html> <html lang="en"> <head> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-XXXXXXX');</script> <!-- End Google Tag Manager --> ...省略 </head> <body> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> ...省略 </body> </html>
GTM-XXXXXXX
の部分は利用するGTM
に合わせて変更してください。
プレビューモード
GTM
が組み込まれたか、プレビューモード
を使って確認してみます。
管理画面でプレビュー
ボタンをクリックします。
しばらく待つとプレビューモード
状態になります。
終了する場合は、プレビューモードを終了
をクリックすればOKです。
ページにアクセスして下部にGTM
用のUIが表示されれば組み込みはOKです。
プレビューモード
を使えばGTM
で設定した内容が正しく動きているかも確認できます。
最終的にはGTM
を公開する必要がありますが、作業中に一旦動作を確認するのにプレビューモード
を使います。
トラッキングID用の変数を作成
イベンント送信先のGA
のトラッキングIDは、色んなところで使うので変数としておくと便利です。
GTM
の管理画面から変数
-ユーザー定義変数
-新規
を選択変数
のタイプから、Google アナリティクス設定
を選択トラッキング ID
に、送信したGA
のトラッキングIDを入力変数
の名前を入力して、保存
をクリックして作成完了
トラッキングIDの確認方法はここを参考にしてください。
ページビュー(PV)の計測
ページビュー(以後PV
)を計測する設定を行ってみます。
トリガーの設定
トリガー
はページ内でどういった操作をした場合に、GTM
に反応させるかを決めるものになります。
PV
用のトリガーは標準で用意されていますが、SPA
(Single Page Application)の場合は正しく動作しません。
SPA
用に別トリガーを作ります。
GTM
の管理画面からトリガー
-新規
を選択トリガー
のタイプから履歴の変更
を選択トリガー
の名前を入力して、保存
をクリックすれば作成完了
タグの設定
タグ
は、どのトリガー
で、GA
に対してどういったイベントを送信するかを決めるものになります。
GTM
の管理画面からタグ
-新規
を選択タグ
のタイプからGoogle アナリティクス: ユニバーサル アナリティクス
を選択- タイプの設定を以下のようにします
・トラッキング タイプ
はページビュー
を選択
・Google アナリティクス設定
は、先ほど作ったトラッキングID用の変数を指定 GA
に送信するトリガーを選択
・ 今回はAll Pages
と先ほど作成した履歴の変更
の両方を設定
All Pages
は、GTM
で用意されているPV用のトリガーです
All Pages
も入れた理由は最初のページの場合、履歴の変更
ではイベントが送られないので入れていますタグ
の名前を入力して、保存
をクリックして作成完了
動作を確認
プレビューモード
にしてページ内で遷移などをしてみれば、設定したタグ
が反応しているが分かるかと思います。
イベントの計測
今度はボタンがクリックされた際に、GA
にイベントを送ってみます。
また、どのボタンが押されたかが判別できるように、データーレイヤー変数
というものを使ってみたいと思います。
データーレイヤー変数を追加
GTM
の管理画面から変数
-ユーザー定義変数
-新規
を選択変数
のタイプから、データーレイヤー変数
を選択データーレイヤー変数名
を入力変数
の名前を入力して、保存
をクリックして作成完了
トリガーの設定
GTM
の管理画面からトリガー
-新規
を選択トリガー
のタイプからカスタムイベント
を選択イベント名
を入力一部のカスタムイベンント
のラジオボタンにチェックをつけるEvent
-等しい
-手順3と同じ名前
で設定トリガー
の名前を入力して、保存
をクリックして作成完了
タグの設定
GTM
の管理画面からタグ
-新規
を選択タグ
のタイプからGoogle アナリティクス: ユニバーサル アナリティクス
を選択- タイプの設定を以下のようにします。
・トラッキング タイプ
はイベント
を選択
・カテゴリ
、アクション
を任意で入力
・ラベル
には先ほど作成したデーターレイヤー変数
を指定
・Google アナリティクス設定
は、先ほど作ったトラッキングID用の変数を指定 GA
に送信するトリガーは、先ほど作成したトリガー
を指定タグ
の名前を入力して、保存
をクリックして作成完了
ソースの修正
まずはdatalayer
を使えるように、定義ファイルを作成します。
declare global { interface Window { dataLayer: Array<Object>; } }
こちらの詳細は以下の記事を参考になります。
TypeScript で window 直下にいろいろ生やしたりグローバル変数を定義する
次にボタンのクリックイベントで、上記で追加したwindow.dataLayer
に対して情報をプッシュします。
const { dataLayer } = window; const onPress = React.useCallback(() => { dataLayer.push({ event: "button_click", // トリガーで設定したイベント名を指定 button_name: "hoge", // データーレイヤー変数で作った変数名と値をKeyValueで指定 }); }); <TouchableOpacity onPress={onPress}> <Text>hoge</Text> </TouchableOpacity>
動作確認
プレビューモード
にしてクリックしてみると、以下のようにイベントが反応しているのが分かるかと思います。
イベントをクリックすると、以下のように詳細が見れます。
ラベル
にbutton_name
で指定した値(hoge)が入っているが確認できます。
まとめ
GTM
の基本的な使い方を紹介させてもらいました。
ページ側の対応が最小限で済むので、結構簡単に対応できましたかと思います。
最後までご覧いただきありがとうございました。